package com.haixiaoke.saas.common.weChat.domain;

import lombok.Data;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * @author panda
 * @Date 2024/4/29
 **/
@Data
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.FIELD)
public class RefundParam {

    /**
     * SUCCESS/FAIL
     * <p>
     * 此字段是通信标识，非交易标识，退款是否成功需要解密后查看refund_status来判断
     */
    @XmlElement(name = "return_code")
    private String returnCode;

    /**
     * 当return_code为FAIL时返回信息为错误原因 ，例如
     * <p>
     * 签名失败
     * <p>
     * 参数格式校验错误
     */
    @XmlElement(name = "return_msg")
    private String returnMsg;

    /**
     * 微信分配的公众账号ID（企业号corpid即为此appId）
     */
    @XmlElement(name = "appid")
    private String appId;

    /**
     * 微信支付分配的商户号
     */
    @XmlElement(name = "mch_id")
    private String mchId;

    /**
     * 微信支付分配的商户号密钥
     */
    @XmlElement(name = "mch_key")
    private String mchKey;

    /**
     * 随机字符串，不长于32位。推荐随机数生成算法
     */
    @XmlElement(name = "nonce_str")
    private String nonceStr;

    /**
     * 加密信息请用商户密钥进行解密
     */
    @XmlElement(name = "req_info")
    private String reqInfo;

    public String resultFail(String code, String msg) {
        return "<xml>" +
                "<return_code><![CDATA[" + code + "]]></return_code>" +
                "<return_msg><![CDATA[" + msg + "]]></return_msg>" +
                "</xml>";
    }

    public String resultFail() {
        return "<xml>" +
                "<return_code><![CDATA[" + "FAIL" + "]]></return_code>" +
                "<return_msg><![CDATA[" + "失败" + "]]></return_msg>" +
                "</xml>";
    }

    public String resultSuccess() {
        return "<xml>" +
                "<return_code><![CDATA[" + "SUCCESS" + "]]></return_code>" +
                "<return_msg><![CDATA[" + "OK" + "]]></return_msg>" +
                "</xml>";
    }

    public String resultSuccess(String code, String msg) {
        return "<xml>" +
                "<return_code><![CDATA[" + code + "]]></return_code>" +
                "<return_msg><![CDATA[" + msg + "]]></return_msg>" +
                "</xml>";
    }
}
